package com.delio.server.pagos.pagoadelantos;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.delio.client.pagos.pagoadelantos.PagoAdelanto;
import com.delio.server.base.Conexion;
import com.delio.server.base.util.GxtGridPaginate;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.ibatis.sqlmap.client.SqlMapClient;

public class PagoAdelantos {
	private static SqlMapClient sqlMap = null;
	

	@SuppressWarnings("unchecked")
	public static PagingLoadResult<PagoAdelanto> getPaginate( GxtGridPaginate paginate,Integer contrato_id,Integer periodo ) {

		sqlMap = Conexion.getSqlMap();

		paginate.setLimit();

		if (paginate.order.equals(""))
			paginate.order = "order by id desc";
       
		paginate.condition=" and contrato_id="+contrato_id+" and periodo="+periodo;
		
		
		List<PagoAdelanto> data = null;
		try {
			data = sqlMap.queryForList("paginatePagoAdelanto", paginate);
		} catch (SQLException e) {
			e.printStackTrace();

		}
		return new BasePagingLoadResult<PagoAdelanto>(data, paginate.offset,
				count(paginate));

	}

	private static Integer count(GxtGridPaginate paginate) {
		Integer cont = null;
		try {
			cont = (Integer) sqlMap.queryForObject("countPagoAdelanto");

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return cont;
	}

	public static boolean save(PagoAdelanto emp) {
		sqlMap = Conexion.getSqlMap();
		boolean respuesta = true;
		try {	
			
			if (emp.getId() != null){
				sqlMap.update("updatePagoAdelanto", emp);
		
				}
			else{
				sqlMap.insert("insertPagoAdelanto", emp);
			}
 
			setUpdateAdelantoControlPagos(emp);
			
		} catch (SQLException e) {
		
				e.printStackTrace();

			respuesta = false;
		}

		return respuesta;
	}
	
	public static boolean delete(Integer id,Integer contrato_id,Integer periodo){
		sqlMap = Conexion.getSqlMap();
		boolean respuesta = true;
		try {	
			PagoAdelanto pa=new PagoAdelanto();
			pa.setContrato_id(contrato_id);
			pa.setPeriodo(periodo);
			
			if (id != null){
				sqlMap.delete("deletePagoAdelanto", id);
				setUpdateAdelantoControlPagos(pa);	
			}
			else
				respuesta = false;
		
		} catch (SQLException e) {
		
				e.printStackTrace();

			respuesta = false;
		}

		return respuesta;
		
	}
	
	
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static void setUpdateAdelantoControlPagos(PagoAdelanto pa) {
		sqlMap = Conexion.getSqlMap();
		
		try {

			sqlMap.startTransaction();

			Map m = new HashMap(2);
			m.put("contrato_id", pa.getContrato_id());
			m.put("periodo",pa.getPeriodo());
			
		
			sqlMap.update("updateAdelantoControlPagos", m);
			sqlMap.commitTransaction();
			sqlMap.endTransaction();

		} catch (SQLException e) {
			e.printStackTrace();

			
		}

		
	}
}
